package com.github.sparkzxl.contract;

import io.reactivex.Flowable;
import io.reactivex.functions.Function;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.DynamicArray;
import org.web3j.abi.datatypes.DynamicBytes;
import org.web3j.abi.datatypes.DynamicStruct;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Uint24;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.abi.datatypes.generated.Uint8;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.RemoteFunctionCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.BaseEventResponse;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple2;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.ContractGasProvider;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 1.4.1.
 */
@SuppressWarnings("rawtypes")
public class SwapFlashloan extends Contract {
    public static final String BINARY = "6080604052731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b53c1a33016b2dc2ff3653530bff1848a515c8c5600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b27308f9f90d607463bb33ea1bebb41c27ce5ab6600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e592427a0aece92de3edee1f18e0157c05861564600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d9e1ce17f2641f24ae83637ab66a2cca9c378b9f600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008553480156200026957600080fd5b506200028a6200027e6200029060201b60201c565b6200029860201b60201c565b6200035c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613773806200036c6000396000f3fe60806040526004361061010d5760003560e01c80638da5cb5b11610095578063b478fc0711610064578063b478fc071461037b578063d4dcf896146103b8578063dd0bea13146103e1578063f0b29d881461040a578063f2fde38b1461044757610114565b80638da5cb5b146102d05780639025e64c146102fb57806395e0090414610326578063a0ef91df1461036457610114565b8063333f18a3116100dc578063333f18a3146101d75780633531701a1461021457806337788ed9146102515780634e6630b01461028e578063715018a6146102b957610114565b80630e9a3eb5146101165780630fcd0aaf1461015357806313f34c06146101905780631d370ac8146101cd57610114565b3661011457005b005b34801561012257600080fd5b5061013d6004803603810190610138919061193c565b610470565b60405161014a9190611984565b60405180910390f35b34801561015f57600080fd5b5061017a60048036038101906101759190611d18565b6104d6565b6040516101879190611dec565b60405180910390f35b34801561019c57600080fd5b506101b760048036038101906101b29190611fc8565b610841565b6040516101c491906120c8565b60405180910390f35b6101d5610855565b005b3480156101e357600080fd5b506101fe60048036038101906101f991906120ea565b6108e0565b60405161020b9190611984565b60405180910390f35b34801561022057600080fd5b5061023b6004803603810190610236919061212a565b610946565b6040516102489190611dec565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190612218565b610c00565b60405161028591906123b6565b60405180910390f35b34801561029a57600080fd5b506102a3610cd3565b6040516102b09190611dec565b60405180910390f35b3480156102c557600080fd5b506102ce610cdb565b005b3480156102dc57600080fd5b506102e5610cef565b6040516102f291906123e7565b60405180910390f35b34801561030757600080fd5b50610310610d18565b60405161031d9190611dec565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190612402565b610d1e565b60405161035b9291906125b8565b60405180910390f35b34801561037057600080fd5b50610379610da7565b005b34801561038757600080fd5b506103a2600480360381019061039d91906125ef565b610df8565b6040516103af9190611dec565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da91906125ef565b610e7b565b005b3480156103ed57600080fd5b506104086004803603810190610403919061193c565b610f10565b005b34801561041657600080fd5b50610431600480360381019061042c919061261c565b610ff5565b60405161043e9190612795565b60405180910390f35b34801561045357600080fd5b5061046e600480360381019061046991906125ef565b6111b0565b005b600061047a611233565b60006009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000806009600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000845167ffffffffffffffff81111561052c5761052b611a3f565b5b60405190808252806020026020018201604052801561056557816020015b610552611853565b81526020019060019003908161054a5790505b50905060005b85518110156105ee576040518060400160405280878381518110610592576105916127b7565b5b602002602001015181526020018683815181106105b2576105b16127b7565b5b60200260200101518152508282815181106105d0576105cf6127b7565b5b602002602001018190525080806105e690612815565b91505061056b565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161062a91906123e7565b602060405180830381865afa158015610647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066b9190612872565b90508681116106af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a690612922565b60405180910390fd5b6106ba8884836112b1565b8273ffffffffffffffffffffffffffffffffffffffff1663fb0a6fe360405180604001604052808a815260200185815250306040518363ffffffff1660e01b8152600401610709929190612ac8565b6020604051808303816000875af1158015610728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074c9190612872565b5060008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161078891906123e7565b602060405180830381865afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190612872565b905060006107e0838361140690919063ffffffff16565b90508b1580156107f05750600081115b61082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690612b6a565b60405180910390fd5b80955050505050509695505050505050565b606061084d838361141c565b905092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108c457600080fd5b505af11580156108d8573d6000803e3d6000fd5b505050505050565b60006108ea611233565b816009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905092915050565b600080845167ffffffffffffffff81111561096457610963611a3f565b5b60405190808252806020026020018201604052801561099d57816020015b61098a611853565b8152602001906001900390816109825790505b50905060005b8551811015610a265760405180604001604052808783815181106109ca576109c96127b7565b5b602002602001015181526020018683815181106109ea576109e96127b7565b5b6020026020010151815250828281518110610a0857610a076127b7565b5b60200260200101819052508080610a1e90612815565b9150506109a3565b5060006040518060c001604052808c151581526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018381525090506000600960008360200151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000826040015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610aeb91906123e7565b602060405180830381865afa158015610b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2c9190612872565b905060008360800151118015610b46575082608001518110155b15610b70576001836000019015159081151581525050610b6f83604001518385608001516112b1565b5b8173ffffffffffffffffffffffffffffffffffffffff16638c06292784886040518363ffffffff1660e01b8152600401610bab929190612c22565b6020604051808303816000875af1158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee9190612872565b94505050505098975050505050505050565b610c0861186d565b60006009600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663e714f830878787876040518563ffffffff1660e01b8152600401610c7f9493929190612c61565b6000604051808303816000875af1158015610c9e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610cc79190612e7e565b91505095945050505050565b600047905090565b610ce3611233565b610ced6000611787565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60608073__$a420f1dcc296227686ba83416a75730fdd$__6395e00904846040518263ffffffff1660e01b8152600401610d589190612f11565b600060405180830381865af4158015610d75573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d9e9190613076565b91509150915091565b610daf611233565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610df5573d6000803e3d6000fd5b50565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e3391906123e7565b602060405180830381865afa158015610e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e749190612872565b9050919050565b610e83611233565b6000819050610f0c82338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ec691906123e7565b602060405180830381865afa158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f079190612872565b6112b1565b5050565b610f18611233565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401610f789190611dec565b600060405180830381600087803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ff0573d6000803e3d6000fd5b505050565b606060006009600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000855167ffffffffffffffff81111561104c5761104b611a3f565b5b60405190808252806020026020018201604052801561108557816020015b611072611853565b81526020019060019003908161106a5790505b50905060005b865181101561110e5760405180604001604052808883815181106110b2576110b16127b7565b5b602002602001015181526020018683815181106110d2576110d16127b7565b5b60200260200101518152508282815181106110f0576110ef6127b7565b5b6020026020010181905250808061110690612815565b91505061108b565b508173ffffffffffffffffffffffffffffffffffffffff1663bf5109016040518060400160405280888152602001848152506040518263ffffffff1660e01b815260040161115c91906131a1565b6000604051808303816000875af115801561117b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906111a4919061325a565b92505050949350505050565b6111b8611233565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613315565b60405180910390fd5b61123081611787565b50565b61123b61184b565b73ffffffffffffffffffffffffffffffffffffffff16611259610cef565b73ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690613381565b60405180910390fd5b565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b85856040516024016112e69291906133a1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113509190613406565b6000604051808303816000865af19150503d806000811461138d576040519150601f19603f3d011682016040523d82523d6000602084013e611392565b606091505b50915091508180156113c057506000815114806113bf5750808060200190518101906113be9190613432565b5b5b6113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f6906134ab565b60405180910390fd5b5050505050565b6000818361141491906134cb565b905092915050565b606060028351036114a3578260008151811061143b5761143a6127b7565b5b602002602001015182600081518110611457576114566127b7565b5b602002602001015184600181518110611473576114726127b7565b5b602002602001015160405160200161148d9392919061357d565b6040516020818303038152906040529050611781565b600383510361156257826000815181106114c0576114bf6127b7565b5b6020026020010151826000815181106114dc576114db6127b7565b5b6020026020010151846001815181106114f8576114f76127b7565b5b602002602001015184600181518110611514576115136127b7565b5b6020026020010151866002815181106115305761152f6127b7565b5b602002602001015160405160200161154c9594939291906135ba565b6040516020818303038152906040529050611781565b600483510361165b578260008151811061157f5761157e6127b7565b5b60200260200101518260008151811061159b5761159a6127b7565b5b6020026020010151846001815181106115b7576115b66127b7565b5b6020026020010151846001815181106115d3576115d26127b7565b5b6020026020010151866002815181106115ef576115ee6127b7565b5b60200260200101518660028151811061160b5761160a6127b7565b5b602002602001015188600381518110611627576116266127b7565b5b60200260200101516040516020016116459796959493929190613619565b6040516020818303038152906040529050611781565b8260008151811061166f5761166e6127b7565b5b60200260200101518260008151811061168b5761168a6127b7565b5b6020026020010151846001815181106116a7576116a66127b7565b5b6020026020010151846001815181106116c3576116c26127b7565b5b6020026020010151866002815181106116df576116de6127b7565b5b6020026020010151866002815181106116fb576116fa6127b7565b5b602002602001015188600381518110611717576117166127b7565b5b602002602001015188600381518110611733576117326127b7565b5b60200260200101518a60048151811061174f5761174e6127b7565b5b602002602001015160405160200161176f9998979695949392919061369a565b60405160208183030381529060405290505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b604051806040016040528060008152602001606081525090565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61191981611906565b811461192457600080fd5b50565b60008135905061193681611910565b92915050565b600060208284031215611952576119516118fc565b5b600061196084828501611927565b91505092915050565b60008115159050919050565b61197e81611969565b82525050565b60006020820190506119996000830184611975565b92915050565b6119a881611969565b81146119b357600080fd5b50565b6000813590506119c58161199f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119f6826119cb565b9050919050565b611a06816119eb565b8114611a1157600080fd5b50565b600081359050611a23816119fd565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611a7782611a2e565b810181811067ffffffffffffffff82111715611a9657611a95611a3f565b5b80604052505050565b6000611aa96118f2565b9050611ab58282611a6e565b919050565b600067ffffffffffffffff821115611ad557611ad4611a3f565b5b602082029050602081019050919050565b600080fd5b6000611afe611af984611aba565b611a9f565b90508083825260208201905060208402830185811115611b2157611b20611ae6565b5b835b81811015611b4a5780611b368882611927565b845260208401935050602081019050611b23565b5050509392505050565b600082601f830112611b6957611b68611a29565b5b8135611b79848260208601611aeb565b91505092915050565b600067ffffffffffffffff821115611b9d57611b9c611a3f565b5b602082029050602081019050919050565b600080fd5b600067ffffffffffffffff821115611bce57611bcd611a3f565b5b611bd782611a2e565b9050602081019050919050565b82818337600083830152505050565b6000611c06611c0184611bb3565b611a9f565b905082815260208101848484011115611c2257611c21611bae565b5b611c2d848285611be4565b509392505050565b600082601f830112611c4a57611c49611a29565b5b8135611c5a848260208601611bf3565b91505092915050565b6000611c76611c7184611b82565b611a9f565b90508083825260208201905060208402830185811115611c9957611c98611ae6565b5b835b81811015611ce057803567ffffffffffffffff811115611cbe57611cbd611a29565b5b808601611ccb8982611c35565b85526020850194505050602081019050611c9b565b5050509392505050565b600082601f830112611cff57611cfe611a29565b5b8135611d0f848260208601611c63565b91505092915050565b60008060008060008060c08789031215611d3557611d346118fc565b5b6000611d4389828a016119b6565b9650506020611d5489828a01611927565b9550506040611d6589828a01611a14565b9450506060611d7689828a01611927565b935050608087013567ffffffffffffffff811115611d9757611d96611901565b5b611da389828a01611b54565b92505060a087013567ffffffffffffffff811115611dc457611dc3611901565b5b611dd089828a01611cea565b9150509295509295509295565b611de681611906565b82525050565b6000602082019050611e016000830184611ddd565b92915050565b600067ffffffffffffffff821115611e2257611e21611a3f565b5b602082029050602081019050919050565b6000611e46611e4184611e07565b611a9f565b90508083825260208201905060208402830185811115611e6957611e68611ae6565b5b835b81811015611e925780611e7e8882611a14565b845260208401935050602081019050611e6b565b5050509392505050565b600082601f830112611eb157611eb0611a29565b5b8135611ec1848260208601611e33565b91505092915050565b600067ffffffffffffffff821115611ee557611ee4611a3f565b5b602082029050602081019050919050565b600062ffffff82169050919050565b611f0e81611ef6565b8114611f1957600080fd5b50565b600081359050611f2b81611f05565b92915050565b6000611f44611f3f84611eca565b611a9f565b90508083825260208201905060208402830185811115611f6757611f66611ae6565b5b835b81811015611f905780611f7c8882611f1c565b845260208401935050602081019050611f69565b5050509392505050565b600082601f830112611faf57611fae611a29565b5b8135611fbf848260208601611f31565b91505092915050565b60008060408385031215611fdf57611fde6118fc565b5b600083013567ffffffffffffffff811115611ffd57611ffc611901565b5b61200985828601611e9c565b925050602083013567ffffffffffffffff81111561202a57612029611901565b5b61203685828601611f9a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561207a57808201518184015260208101905061205f565b83811115612089576000848401525b50505050565b600061209a82612040565b6120a4818561204b565b93506120b481856020860161205c565b6120bd81611a2e565b840191505092915050565b600060208201905081810360008301526120e2818461208f565b905092915050565b60008060408385031215612101576121006118fc565b5b600061210f85828601611927565b925050602061212085828601611a14565b9150509250929050565b600080600080600080600080610100898b03121561214b5761214a6118fc565b5b60006121598b828c016119b6565b985050602061216a8b828c01611927565b975050604061217b8b828c01611a14565b965050606061218c8b828c01611927565b955050608061219d8b828c01611927565b94505060a089013567ffffffffffffffff8111156121be576121bd611901565b5b6121ca8b828c01611b54565b93505060c089013567ffffffffffffffff8111156121eb576121ea611901565b5b6121f78b828c01611cea565b92505060e06122088b828c01611a14565b9150509295985092959890939650565b600080600080600060a08688031215612234576122336118fc565b5b600061224288828901611927565b955050602061225388828901611927565b945050604061226488828901611a14565b935050606061227588828901611a14565b925050608061228688828901611f1c565b9150509295509295909350565b61229c816119eb565b82525050565b600081519050919050565b600082825260208201905092915050565b60006122c9826122a2565b6122d381856122ad565b93506122e381856020860161205c565b6122ec81611a2e565b840191505092915050565b600060ff82169050919050565b61230d816122f7565b82525050565b600060e08301600083015161232b6000860182612293565b506020830151848203602086015261234382826122be565b91505060408301516123586040860182612304565b50606083015161236b6060860182612293565b506080830151848203608086015261238382826122be565b91505060a083015161239860a0860182612304565b5060c08301516123ab60c0860182612293565b508091505092915050565b600060208201905081810360008301526123d08184612313565b905092915050565b6123e1816119eb565b82525050565b60006020820190506123fc60008301846123d8565b92915050565b600060208284031215612418576124176118fc565b5b600082013567ffffffffffffffff81111561243657612435611901565b5b61244284828501611c35565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006124838383612293565b60208301905092915050565b6000602082019050919050565b60006124a78261244b565b6124b18185612456565b93506124bc83612467565b8060005b838110156124ed5781516124d48882612477565b97506124df8361248f565b9250506001810190506124c0565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61252f81611ef6565b82525050565b60006125418383612526565b60208301905092915050565b6000602082019050919050565b6000612565826124fa565b61256f8185612505565b935061257a83612516565b8060005b838110156125ab5781516125928882612535565b975061259d8361254d565b92505060018101905061257e565b5085935050505092915050565b600060408201905081810360008301526125d2818561249c565b905081810360208301526125e6818461255a565b90509392505050565b600060208284031215612605576126046118fc565b5b600061261384828501611a14565b91505092915050565b60008060008060808587031215612636576126356118fc565b5b600061264487828801611927565b945050602085013567ffffffffffffffff81111561266557612664611901565b5b61267187828801611b54565b935050604085013567ffffffffffffffff81111561269257612691611901565b5b61269e87828801611b54565b925050606085013567ffffffffffffffff8111156126bf576126be611901565b5b6126cb87828801611cea565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61270c81611906565b82525050565b600061271e8383612703565b60208301905092915050565b6000602082019050919050565b6000612742826126d7565b61274c81856126e2565b9350612757836126f3565b8060005b8381101561278857815161276f8882612712565b975061277a8361272a565b92505060018101905061275b565b5085935050505092915050565b600060208201905081810360008301526127af8184612737565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061282082611906565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612852576128516127e6565b5b600182019050919050565b60008151905061286c81611910565b92915050565b600060208284031215612888576128876118fc565b5b60006128968482850161285d565b91505092915050565b600082825260208201905092915050565b7f54686520616c6c6f77546f6b656e2062616c616e6365206d757374206265206760008201527f726561746572207468616e20616d6f756e74496e000000000000000000000000602082015250565b600061290c60348361289f565b9150612917826128b0565b604082019050919050565b6000602082019050818103600083015261293b816128ff565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061298a82612040565b612994818561296e565b93506129a481856020860161205c565b6129ad81611a2e565b840191505092915050565b60006040830160008301516129d06000860182612703565b50602083015184820360208601526129e8828261297f565b9150508091505092915050565b6000612a0183836129b8565b905092915050565b6000602082019050919050565b6000612a2182612942565b612a2b818561294d565b935083602082028501612a3d8561295e565b8060005b85811015612a795784840389528151612a5a85826129f5565b9450612a6583612a09565b925060208a01995050600181019050612a41565b50829750879550505050505092915050565b6000604083016000830151612aa36000860182612703565b5060208301518482036020860152612abb8282612a16565b9150508091505092915050565b60006040820190508181036000830152612ae28185612a8b565b9050612af160208301846123d8565b9392505050565b7f546865206172626974726167652062616c616e6365206d75737420626520677260008201527f6561746572207468616e20300000000000000000000000000000000000000000602082015250565b6000612b54602c8361289f565b9150612b5f82612af8565b604082019050919050565b60006020820190508181036000830152612b8381612b47565b9050919050565b612b9381611969565b82525050565b600060c083016000830151612bb16000860182612b8a565b506020830151612bc46020860182612703565b506040830151612bd76040860182612293565b506060830151612bea6060860182612703565b506080830151612bfd6080860182612703565b5060a083015184820360a0860152612c158282612a16565b9150508091505092915050565b60006040820190508181036000830152612c3c8185612b99565b9050612c4b60208301846123d8565b9392505050565b612c5b81611ef6565b82525050565b6000608082019050612c766000830187611ddd565b612c8360208301866123d8565b612c9060408301856123d8565b612c9d6060830184612c52565b95945050505050565b600080fd5b600080fd5b600081519050612cbf816119fd565b92915050565b600067ffffffffffffffff821115612ce057612cdf611a3f565b5b612ce982611a2e565b9050602081019050919050565b6000612d09612d0484612cc5565b611a9f565b905082815260208101848484011115612d2557612d24611bae565b5b612d3084828561205c565b509392505050565b600082601f830112612d4d57612d4c611a29565b5b8151612d5d848260208601612cf6565b91505092915050565b612d6f816122f7565b8114612d7a57600080fd5b50565b600081519050612d8c81612d66565b92915050565b600060e08284031215612da857612da7612ca6565b5b612db260e0611a9f565b90506000612dc284828501612cb0565b600083015250602082015167ffffffffffffffff811115612de657612de5612cab565b5b612df284828501612d38565b6020830152506040612e0684828501612d7d565b6040830152506060612e1a84828501612cb0565b606083015250608082015167ffffffffffffffff811115612e3e57612e3d612cab565b5b612e4a84828501612d38565b60808301525060a0612e5e84828501612d7d565b60a08301525060c0612e7284828501612cb0565b60c08301525092915050565b600060208284031215612e9457612e936118fc565b5b600082015167ffffffffffffffff811115612eb257612eb1611901565b5b612ebe84828501612d92565b91505092915050565b600082825260208201905092915050565b6000612ee382612040565b612eed8185612ec7565b9350612efd81856020860161205c565b612f0681611a2e565b840191505092915050565b60006020820190508181036000830152612f2b8184612ed8565b905092915050565b6000612f46612f4184611e07565b611a9f565b90508083825260208201905060208402830185811115612f6957612f68611ae6565b5b835b81811015612f925780612f7e8882612cb0565b845260208401935050602081019050612f6b565b5050509392505050565b600082601f830112612fb157612fb0611a29565b5b8151612fc1848260208601612f33565b91505092915050565b600081519050612fd981611f05565b92915050565b6000612ff2612fed84611eca565b611a9f565b9050808382526020820190506020840283018581111561301557613014611ae6565b5b835b8181101561303e578061302a8882612fca565b845260208401935050602081019050613017565b5050509392505050565b600082601f83011261305d5761305c611a29565b5b815161306d848260208601612fdf565b91505092915050565b6000806040838503121561308d5761308c6118fc565b5b600083015167ffffffffffffffff8111156130ab576130aa611901565b5b6130b785828601612f9c565b925050602083015167ffffffffffffffff8111156130d8576130d7611901565b5b6130e485828601613048565b9150509250929050565b600082825260208201905092915050565b600061310a826126d7565b61311481856130ee565b935061311f836126f3565b8060005b838110156131505781516131378882612712565b97506131428361272a565b925050600181019050613123565b5085935050505092915050565b6000604083016000830151848203600086015261317a82826130ff565b915050602083015184820360208601526131948282612a16565b9150508091505092915050565b600060208201905081810360008301526131bb818461315d565b905092915050565b60006131d66131d184611aba565b611a9f565b905080838252602082019050602084028301858111156131f9576131f8611ae6565b5b835b81811015613222578061320e888261285d565b8452602084019350506020810190506131fb565b5050509392505050565b600082601f83011261324157613240611a29565b5b81516132518482602086016131c3565b91505092915050565b6000602082840312156132705761326f6118fc565b5b600082015167ffffffffffffffff81111561328e5761328d611901565b5b61329a8482850161322c565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132ff60268361289f565b915061330a826132a3565b604082019050919050565b6000602082019050818103600083015261332e816132f2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061336b60208361289f565b915061337682613335565b602082019050919050565b6000602082019050818103600083015261339a8161335e565b9050919050565b60006040820190506133b660008301856123d8565b6133c36020830184611ddd565b9392505050565b600081905092915050565b60006133e082612040565b6133ea81856133ca565b93506133fa81856020860161205c565b80840191505092915050565b600061341282846133d5565b915081905092915050565b60008151905061342c8161199f565b92915050565b600060208284031215613448576134476118fc565b5b60006134568482850161341d565b91505092915050565b7f5354000000000000000000000000000000000000000000000000000000000000600082015250565b600061349560028361289f565b91506134a08261345f565b602082019050919050565b600060208201905081810360008301526134c481613488565b9050919050565b60006134d682611906565b91506134e183611906565b9250828210156134f4576134f36127e6565b5b828203905092915050565b60008160601b9050919050565b6000613517826134ff565b9050919050565b60006135298261350c565b9050919050565b61354161353c826119eb565b61351e565b82525050565b60008160e81b9050919050565b600061355f82613547565b9050919050565b61357761357282611ef6565b613554565b82525050565b60006135898286613530565b6014820191506135998285613566565b6003820191506135a98284613530565b601482019150819050949350505050565b60006135c68288613530565b6014820191506135d68287613566565b6003820191506135e68286613530565b6014820191506135f68285613566565b6003820191506136068284613530565b6014820191508190509695505050505050565b6000613625828a613530565b6014820191506136358289613566565b6003820191506136458288613530565b6014820191506136558287613566565b6003820191506136658286613530565b6014820191506136758285613566565b6003820191506136858284613530565b60148201915081905098975050505050505050565b60006136a6828c613530565b6014820191506136b6828b613566565b6003820191506136c6828a613530565b6014820191506136d68289613566565b6003820191506136e68288613530565b6014820191506136f68287613566565b6003820191506137068286613530565b6014820191506137168285613566565b6003820191506137268284613530565b6014820191508190509a995050505050505050505056fea2646970667358221220bf921283a51b0b71589794c667feaf2318d7cd1cb6cf18c520e96de090780a9b64736f6c634300080f0033";

    public static final String FUNC_ADDFLASHLOAN = "addFlashloan";

    public static final String FUNC_DECODEPACKED = "decodePacked";

    public static final String FUNC_DEPOSITWETH = "depositWeth";

    public static final String FUNC_ENCODEPACKED = "encodePacked";

    public static final String FUNC_ERC20BALANCE = "erc20Balance";

    public static final String FUNC_ETHBALANCE = "ethBalance";

    public static final String FUNC_NETWORKID = "networkId";

    public static final String FUNC_OWNER = "owner";

    public static final String FUNC_REMOVEFLASHLOAN = "removeFlashloan";

    public static final String FUNC_RENOUNCEOWNERSHIP = "renounceOwnership";

    public static final String FUNC_SWAPFLASHLOANMULTISTEP = "swapFlashloanMultiStep";

    public static final String FUNC_SWAPMULTIDEXBATCHESTIMATE = "swapMultiDexBatchEstimate";

    public static final String FUNC_SWAPMULTIDEXPAIRINFO = "swapMultiDexPairInfo";

    public static final String FUNC_SWAPMULTIDEXSTEP = "swapMultiDexStep";

    public static final String FUNC_TRANSFEROWNERSHIP = "transferOwnership";

    public static final String FUNC_WITHDRAERC20 = "withdraErc20";

    public static final String FUNC_WITHDRAWETH = "withdrawEth";

    public static final String FUNC_WITHDRAWWETH = "withdrawWeth";

    public static final Event OWNERSHIPTRANSFERRED_EVENT = new Event("OwnershipTransferred", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}));
    ;

    @Deprecated
    protected SwapFlashloan(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected SwapFlashloan(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected SwapFlashloan(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected SwapFlashloan(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public List<OwnershipTransferredEventResponse> getOwnershipTransferredEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, transactionReceipt);
        ArrayList<OwnershipTransferredEventResponse> responses = new ArrayList<OwnershipTransferredEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Flowable<OwnershipTransferredEventResponse> ownershipTransferredEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new Function<Log, OwnershipTransferredEventResponse>() {
            @Override
            public OwnershipTransferredEventResponse apply(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, log);
                OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
                typedResponse.log = log;
                typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public Flowable<OwnershipTransferredEventResponse> ownershipTransferredEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(OWNERSHIPTRANSFERRED_EVENT));
        return ownershipTransferredEventFlowable(filter);
    }

    public RemoteFunctionCall<TransactionReceipt> addFlashloan(BigInteger flashloanID, String flashloan) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_ADDFLASHLOAN, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(flashloanID), 
                new org.web3j.abi.datatypes.Address(160, flashloan)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<Tuple2<List<String>, List<BigInteger>>> decodePacked(byte[] paths) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_DECODEPACKED, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.DynamicBytes(paths)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Address>>() {}, new TypeReference<DynamicArray<Uint24>>() {}));
        return new RemoteFunctionCall<Tuple2<List<String>, List<BigInteger>>>(function,
                new Callable<Tuple2<List<String>, List<BigInteger>>>() {
                    @Override
                    public Tuple2<List<String>, List<BigInteger>> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple2<List<String>, List<BigInteger>>(
                                convertToNative((List<Address>) results.get(0).getValue()), 
                                convertToNative((List<Uint24>) results.get(1).getValue()));
                    }
                });
    }

    public RemoteFunctionCall<TransactionReceipt> depositWeth() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_DEPOSITWETH, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<byte[]> encodePacked(List<String> tokens, List<BigInteger> fees) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_ENCODEPACKED, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.Address>(
                        org.web3j.abi.datatypes.Address.class,
                        org.web3j.abi.Utils.typeMap(tokens, org.web3j.abi.datatypes.Address.class)), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.generated.Uint24>(
                        org.web3j.abi.datatypes.generated.Uint24.class,
                        org.web3j.abi.Utils.typeMap(fees, org.web3j.abi.datatypes.generated.Uint24.class))), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<BigInteger> erc20Balance(String token) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_ERC20BALANCE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, token)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<BigInteger> ethBalance() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_ETHBALANCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<BigInteger> networkId() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_NETWORKID, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<String> owner() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_OWNER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<TransactionReceipt> removeFlashloan(BigInteger flashloanID) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_REMOVEFLASHLOAN, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(flashloanID)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> renounceOwnership() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_RENOUNCEOWNERSHIP, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> swapFlashloanMultiStep(Boolean debug, BigInteger borrowDex, String allowToken, BigInteger borrowAmount, BigInteger principalAmount, List<BigInteger> swapDex, List<byte[]> paths, String recipient) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_SWAPFLASHLOANMULTISTEP, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Bool(debug), 
                new org.web3j.abi.datatypes.generated.Uint256(borrowDex), 
                new org.web3j.abi.datatypes.Address(160, allowToken), 
                new org.web3j.abi.datatypes.generated.Uint256(borrowAmount), 
                new org.web3j.abi.datatypes.generated.Uint256(principalAmount), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.generated.Uint256>(
                        org.web3j.abi.datatypes.generated.Uint256.class,
                        org.web3j.abi.Utils.typeMap(swapDex, org.web3j.abi.datatypes.generated.Uint256.class)), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.DynamicBytes>(
                        org.web3j.abi.datatypes.DynamicBytes.class,
                        org.web3j.abi.Utils.typeMap(paths, org.web3j.abi.datatypes.DynamicBytes.class)), 
                new org.web3j.abi.datatypes.Address(160, recipient)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> swapMultiDexBatchEstimate(BigInteger borrowDex, List<BigInteger> swapDex, List<BigInteger> amountIn, List<byte[]> paths) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_SWAPMULTIDEXBATCHESTIMATE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(borrowDex), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.generated.Uint256>(
                        org.web3j.abi.datatypes.generated.Uint256.class,
                        org.web3j.abi.Utils.typeMap(swapDex, org.web3j.abi.datatypes.generated.Uint256.class)), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.generated.Uint256>(
                        org.web3j.abi.datatypes.generated.Uint256.class,
                        org.web3j.abi.Utils.typeMap(amountIn, org.web3j.abi.datatypes.generated.Uint256.class)), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.DynamicBytes>(
                        org.web3j.abi.datatypes.DynamicBytes.class,
                        org.web3j.abi.Utils.typeMap(paths, org.web3j.abi.datatypes.DynamicBytes.class))), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> swapMultiDexPairInfo(BigInteger borrowDex, BigInteger swapDex, String token0, String token1, BigInteger fee) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_SWAPMULTIDEXPAIRINFO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(borrowDex), 
                new org.web3j.abi.datatypes.generated.Uint256(swapDex), 
                new org.web3j.abi.datatypes.Address(160, token0), 
                new org.web3j.abi.datatypes.Address(160, token1), 
                new org.web3j.abi.datatypes.generated.Uint24(fee)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> swapMultiDexStep(Boolean debug, BigInteger borrowDex, String allowToken, BigInteger amountIn, List<BigInteger> swapDex, List<byte[]> paths) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_SWAPMULTIDEXSTEP, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Bool(debug), 
                new org.web3j.abi.datatypes.generated.Uint256(borrowDex), 
                new org.web3j.abi.datatypes.Address(160, allowToken), 
                new org.web3j.abi.datatypes.generated.Uint256(amountIn), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.generated.Uint256>(
                        org.web3j.abi.datatypes.generated.Uint256.class,
                        org.web3j.abi.Utils.typeMap(swapDex, org.web3j.abi.datatypes.generated.Uint256.class)), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.DynamicBytes>(
                        org.web3j.abi.datatypes.DynamicBytes.class,
                        org.web3j.abi.Utils.typeMap(paths, org.web3j.abi.datatypes.DynamicBytes.class))), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> transferOwnership(String newOwner) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_TRANSFEROWNERSHIP, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, newOwner)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> withdraErc20(String token) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_WITHDRAERC20, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, token)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> withdrawEth() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_WITHDRAWETH, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> withdrawWeth(BigInteger amount) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_WITHDRAWWETH, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    @Deprecated
    public static SwapFlashloan load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new SwapFlashloan(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static SwapFlashloan load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new SwapFlashloan(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static SwapFlashloan load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new SwapFlashloan(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static SwapFlashloan load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new SwapFlashloan(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<SwapFlashloan> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(SwapFlashloan.class, web3j, credentials, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<SwapFlashloan> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(SwapFlashloan.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    public static RemoteCall<SwapFlashloan> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(SwapFlashloan.class, web3j, transactionManager, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<SwapFlashloan> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(SwapFlashloan.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public static class PairStruct extends DynamicStruct {
        public String token0;

        public String symbol0;

        public BigInteger decimals0;

        public String token1;

        public String symbol1;

        public BigInteger decimals1;

        public String pair;

        public PairStruct(String token0, String symbol0, BigInteger decimals0, String token1, String symbol1, BigInteger decimals1, String pair) {
            super(new org.web3j.abi.datatypes.Address(token0),new org.web3j.abi.datatypes.Utf8String(symbol0),new org.web3j.abi.datatypes.generated.Uint8(decimals0),new org.web3j.abi.datatypes.Address(token1),new org.web3j.abi.datatypes.Utf8String(symbol1),new org.web3j.abi.datatypes.generated.Uint8(decimals1),new org.web3j.abi.datatypes.Address(pair));
            this.token0 = token0;
            this.symbol0 = symbol0;
            this.decimals0 = decimals0;
            this.token1 = token1;
            this.symbol1 = symbol1;
            this.decimals1 = decimals1;
            this.pair = pair;
        }

        public PairStruct(Address token0, Utf8String symbol0, Uint8 decimals0, Address token1, Utf8String symbol1, Uint8 decimals1, Address pair) {
            super(token0,symbol0,decimals0,token1,symbol1,decimals1,pair);
            this.token0 = token0.getValue();
            this.symbol0 = symbol0.getValue();
            this.decimals0 = decimals0.getValue();
            this.token1 = token1.getValue();
            this.symbol1 = symbol1.getValue();
            this.decimals1 = decimals1.getValue();
            this.pair = pair.getValue();
        }
    }

    public static class OwnershipTransferredEventResponse extends BaseEventResponse {
        public String previousOwner;

        public String newOwner;
    }
}
